package resource

import (
	"database/sql"
	"fmt"
)

import (
	_ "github.com/denisenkom/go-mssqldb"
)

import (
	dbc "dbConnector"
	"util"
)

//假设模型评级只保留最新一日的数据
func (r *Resource) getModelLevel(db *sql.DB) error {
	rows, err := db.Query("Exec P_RecommenderServer_LoadScoreModel_V3")
	if err != nil {
		return fmt.Errorf("db.Query(): %v", err)
	}
	defer rows.Close()

	id := new(int)
	level := new(util.Level)
	var modelLevel [util.PERIOD_COUNT]util.Level
	for rows.Next() {
		if err = rows.Scan(id, level); err != nil {
			return fmt.Errorf("rows.Scan(): %v", err)
		}
		if modelLevel[-1-*id], err = util.ConvertLevel(*level); err != nil { //数据库中周期的值为-1~-4，程序中定义的对应值为0~3
			return fmt.Errorf("convertLevel(): %v", err)
		}
	}
	if err = rows.Err(); err != nil {
		return fmt.Errorf("rows.Err(): %v", err)
	}
	r.ModeLevel = modelLevel
	return nil
}

//更新模型评级
func (res *Resource) updateModeLevel() error {
	dbc.ServerLock.RLock()
	db := dbc.Servers.ModelLevel.DB
	dbc.ServerLock.RUnlock()
	/*	db, err := s.InitSqlServer()
		if err != nil {
			return fmt.Errorf("initSqlServer(%v): %v", s, err)
		}
		defer db.Close()*/
	err := res.getModelLevel(db)
	if err != nil {
		return fmt.Errorf("GetModelLevel(): %v", err)
	}
	return nil
}
